home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Varios Español
/
Varios Español.iso
/
DBASE5
/
SAMPLES.ZIP
/
PEDIDOS.PRG
< prev
next >
Wrap
Text File
|
1994-10-12
|
12KB
|
308 lines
******************************************************************************
* NOMBRE DEL PROGRAMA: PEDIDOS.PRG
* PANTALLA DEL FICHERO DE ORDENES DE PEDIDOS
* PROGRAMA EJEMPLO DE APLICACION DE GESTION
* ULTIMO CAMBIO: 24/02/93 04:00 PM
* ESCRITO POR: BORLAND
******************************************************************************
*
* FICHEROS USADOS:
* Fichero de base de datos = Pedidos.dbf
* Fichero de índice = Pedidos.mdx
* ETIQUETA: Pedido = cod_cli+DTOS(fech_trans)+numero_pp <= Indice maestro
* Fichero de procedimientos externos = Libreria.prg
******************************************************************************
* Procedimiento principal
PROCEDURE Pedidos
* Enlazar con el fichero de procedimientos externos
SET PROCEDURE TO Librería
* Definir entorno del fichero
DO Set_env
SET NEAR on
SET COLOR TO &c_standard.
* Declaración de variables usadas:
* Variables de memoria para los campos de la base de datos
STORE "" TO Cód_cli, Núm_ped, Cód_emp, Cód_art
STORE { / / } TO Fech_trans
Can_art = 0
Facturado = .F.
* Variables diversas - usadas para pasar parámetros a Libreria
* para encontrar registros, obtener informes, listar registros y otras opciones
dbf = "Pedidos" && Informe estándar disponible
mlist = "NO DISPONIBLE" && Lista de correo no disponible
STORE "N/D" TO Cli_rpt && Informe personalizado no disponible
key = "m->Cód_cli+DTOC(m->Fech_trans)+m->Núm_ped"
key1 = "m->Cód_cli"
key2 = "m->Fech_trans"
key3 = "m->Núm_ped"
keyNomb1 = "Cliente Nº:"
keyNomb2 = "Fecha de Pedido:"
keyNomb3 = "Pedido Nº:"
list_flds = "Cód_cli,Fech_trans,Núm_ped,Cód_art,Can_art,Artículo->Precio"
STORE "" TO mCliid, mpartid, mempid
* Abrir ficheros de base de datos y de índices
SELECT 1
USE Pedidos ORDER Pedido
USE Artículo ORDER Cód_art IN 2
USE Cli ORDER Cód_cli IN 3
USE Empleado ORDER Cód_emp IN 4
SET RELATION TO Cód_art INTO Artículo, Cód_cli INTO Cli, Cód_emp INTO Empleado
GO TOP
record_num = RECNO()
DO Load_fld
* Visualizar la pantalla de datos
CLEAR
DO Dstatus
DO Backgrnd
DO Show_data
* Definir menús de ventana
DO Bar_def
* Activar el menú de ventana principal - ejecutar opción
SET COLOR TO &c_popup.
ACTIVATE POPUP main_mnu
DO Sub_ret
*
RETURN
*===========================fin del procedimiento principal==============================
* PROCEDIMIENTOS DE UTILIDADES (Específicos de Pedidos.prg)
PROCEDURE Filter
* Agrupar datos por condición de filtro
* Seleccionar la condición de filtro (S=activar,N=cancelar,D=desactivar)
* Si el filtro está activado, la opción por defecto es S, visualizar ventana
* Si el filtro está desactivado, la opción por defecto es D, visualizar ventana
choice = IIF(filters_on,"D","S")
DO Filt_ans
IF choice = "S"
* Comenzar proceso de selección de la condición de filtro
*
mCliid = SPACE(6)
mpartid = SPACE(10)
mempid = SPACE(11)
ACTIVATE WINDOW alert
* Obtener del usuario la condición de filtro
@ 0, 0 SAY "--------- CONDICION DE FILTRO ---------"
@ 2, 0 SAY "CLIENTE Nº.:" GET mCliid FUNCTION "!" ;
MESSAGE "Introduzca código de cliente de 6 dígitos " + ;
"empezando por letra - Esc para salir"
@ 3, 0 SAY "ARTICULO Nº:" GET mpartid FUNCTION "!"
@ 4, 0 SAY "EMPLEADO Nº:" GET mempid
@ 5, 0 SAY "Introduzca una o más condiciones"
READ
DEACTIVATE WINDOW alert
* Inicializar la variable de la condición de filtro
subset = " "
* Proceso de entradas para definir la condición de filtro
mCliid = TRIM(mCliid)
mpartid = TRIM(mpartid)
mempid = TRIM(mempid)
subset = subset + IIF("" <> mCliid,"Cód_cli = '&mCliid.' .AND. ","")
subset = subset + IIF("" <> mpartid,"Cód_art = '&mpartid.' .AND. ","")
subset = subset + IIF("" <> mempid, "Cód_emp = '&mempid.' .AND. ","")
*
IF "" = TRIM(subset) && Comprobar si se han introducido datos en la serie
* Si la serie está vacia, salir
DO Warnbell
filters_on = .F.
ELSE
* Si la serie no está vacia, truncar desde .AND. hasta el final
subset = SUBSTR(subset,1,LEN(subset)-6)
SET FILTER TO &subset. && Activar el filtro con la serie introducida
GO TOP && Activar el filtro moviendo el puntero de registro
* Comprobar si algunos registros cumplen la condición de filtro (EOF=ninguno la cumple)
filters_on = .NOT. EOF()
IF .NOT. filters_on && Desactivar el filtro si filters_on = .F.
DO Warnbell
DO Show_msg WITH "Ningún registro de Ordenes de Pedido cumple la condición de filtro."
SET FILTER TO
GO record_num
ENDIF
ENDIF
ELSE
* Si se selecciona "D", desactivar el filtro
SET FILTER TO
filters_on = .F.
ENDIF
RETURN
PROCEDURE Indexer
* Crear/reconstruir índices
INDEX ON Cód_cli+DTOC(Fech_trans)+Núm_ped TAG Pedido
GO TOP
RETURN
PROCEDURE Init_fld
* Inicializar las variables de memoria para introducir datos
Cód_cli = SPACE(6)
Fech_trans = DATE()
Núm_ped = SPACE(5)
Cód_emp = SPACE(11)
Cód_art = SPACE(10)
Can_art = 0
Facturado = .F.
RETURN
PROCEDURE Load_fld
* Cargar los valores de los campos del registro de PEDIDOS en variables de memoria
Cód_cli = Cód_cli
Fech_trans = Fech_trans
Núm_ped = Núm_ped
Cód_emp = Cód_emp
Cód_art = Cód_art
Can_art = Can_art
Facturado = Facturado
RETURN
PROCEDURE Repl_fld
* Sustituir los campos del fichero con los valores de las variables
REPLACE Cód_cli WITH m->Cód_cli, Núm_ped WITH m->Núm_ped,;
Fech_trans WITH m->Fech_trans, Cód_emp WITH m->Cód_emp, ;
Cód_art WITH m->Cód_art, Can_art WITH m->Can_art, ;
Facturado WITH m->Facturado
RETURN
FUNCTION Prof_mgn
PARAMETERS Coste,Precio
* Calcular margen de beneficio
margin = ROUND((Precio-Coste)/Precio*100,1)
RETURN margin
PROCEDURE Backgrnd
* Visualizar la pantalla para entrada de datos y visualizaciones
@ 1,18 TO 3,49 DOUBLE COLOR &c_blue.
@ 5, 2 TO 8,56 DOUBLE COLOR &c_red.
@ 16, 2 TO 16,56 COLOR &c_red.
@ 9, 2 TO 18,56 COLOR &c_red.
@ 2,19 FILL TO 2,48 COLOR &c_blue.
@ 6, 3 FILL TO 7,55 COLOR &c_red.
@ 10, 3 FILL TO 17,55 COLOR &c_red.
@ 6, 3 FILL TO 17,55 COLOR &c_red.
SET COLOR TO &c_data.
@ 2,20 SAY "FICHERO DE ORDENES DE PEDIDO"
@ 6, 4 SAY "CLIENTE Nº:"
@ 7, 4 SAY "FECHA DE PEDIDO:"
@ 7,35 SAY "PEDIDO Nº:"
@ 10, 4 SAY "ARTICULO Nº:"
@ 11, 4 SAY "NOMBRE ART.:"
@ 12, 4 SAY "CANT. PEDIDA:"
@ 12,25 SAY "unidad(es)"
@ 12,36 SAY "PRECIO: ₧"
@ 13, 4 SAY "CANT. DISPONIBLE:"
@ 13,25 SAY "unidad(es)"
@ 13,36 SAY "MARGEN: %"
@ 14, 4 SAY "EMPLEADO Nº:"
@ 15, 4 SAY "FACTURADO:"
@ 17, 4 SAY "NOTAS:"
SET COLOR TO &c_standard.
RETURN
PROCEDURE Show_data
* Visualizar pantalla para entrada de datos
SET COLOR TO &c_fields.
@ 6,16 SAY Cód_cli
@ 7,21 SAY Fech_trans
@ 7,46 SAY Núm_ped
@ 10,18 SAY Cód_art
@ 12,21 SAY Can_art PICTURE "999"
@ 14,17 SAY Cód_emp
@ 15,15 SAY Facturado PICTURE "Y"
@ 17,11 SAY Notas
IF .NOT. BAR() = 2 && no modo de adición
@ 6,25 SAY Cli->Cliente COLOR &c_yelowhit.
@ 11,18 SAY Artículo->Nom_art COLOR &c_yelowhit.
@ 12,44 SAY Artículo->Precio PICTURE "9,999,999" COLOR &c_yelowhit.
@ 13,21 SAY Artículo->Can_alm PICTURE "999" COLOR &c_yelowhit.
@ 13,49 SAY Prof_mgn(Artículo->Coste,Artículo->Precio) ;
PICTURE "99.9" COLOR &c_yelowhit.
@ 14,30 SAY TRIM(Empleado->Nombre)+" "+ Empleado->Apellido ;
COLOR &c_yelowhit.
ELSE
* Modo Adición borrar de pantalla las zonas de los campos
@ 6,25 SAY SPACE(30) && CLIENTE
@ 11,18 SAY SPACE(20) && NOMBRE DE ARTICULO
@ 12,44 SAY SPACE(9) && PRECIO
@ 13,21 SAY SPACE(3) && CANTIDAD ALMACENADA
@ 13,49 SAY SPACE(4) && MARGEN
@ 14,30 SAY SPACE(26) && EMPLEADO
ENDIF
IF ISCOLOR()
@ 20, 2 SAY " Texto/números en amarillo son de fichero relacionado. " ;
COLOR &c_yelowhit.
ELSE
@ 20, 2 SAY " Texto/números sin resaltar son de fichero relacionado. "
COLOR &c_red.
ENDIF
SET COLOR TO &c_standard.
RETURN
PROCEDURE Get_data
* Visualizar pantalla para entrada de datos
SET COLOR TO &c_data.
@ 6,16 GET m->Cód_cli PICTURE "!99999" ;
VALID Lookupid(m->Cód_cli,"Cli","Cliente", 2) ;
ERROR "Número de cliente no válido. Por favor, introduzca de nuevo." ;
MESSAGE "Introduzca código de cliente de 6 dígitos " + ;
"comenzando por una letra - Esc para salir"
@ 7,21 GET m->Fech_trans FUNCTION "D" ;
MESSAGE "Introduzca la fecha de este pedido"
@ 7,46 GET m->Núm_ped FUNCTION "!" ;
MESSAGE "Introduzca el número de pedido"
@ 10,18 GET m->Cód_art FUNCTION "!" ;
VALID Lookupid(m->Cód_art,"Artículo", "Part", 3) ;
ERROR "Número de pedido no válido. Por favor, introduzca de nuevo." ;
MESSAGE "Introduzca número de pédido - Esc para salir"
@ 12,21 GET m->Can_art PICTURE "999" ;
MESSAGE "Introduzca cantidad pedida"
@ 14,17 GET m->Cód_emp PICTURE "999-99-9999" ;
VALID Lookupid(m->Cód_emp, "Empleado", "Empleado", 6) ;
ERROR "Número de empleado no válido. Por favor, introduzca de nuevo." ;
MESSAGE "Introduzca número de empleado - Esc para salir"
@ 15,15 GET m->Facturado PICTURE "Y" ;
MESSAGE "Introduzca si este pedido ha sido Facturado " + ;
"(normalmente realizado por el sistema)"
@ 17,11 GET Notas WINDOW memo_windo ;
MESSAGE "Introduzca las notas en el campo memo, pulse " + ;
"Ctrl-Home para acceder (Ctrl-End para salir)"
IF .NOT. BAR() = 2 && Modo no adicción
@ 6,25 SAY Cli->Cliente COLOR &c_yelowhit.
@ 11,18 SAY Artículo->Nom_art COLOR &c_yelowhit.
@ 12,44 SAY Artículo->Precio PICTURE "9,999,999" COLOR &c_yelowhit.
@ 13,21 SAY Artículo->Can_alm PICTURE "999" COLOR &c_yelowhit.
@ 13,49 SAY Prof_mgn(Artículo->Coste,Artículo->Precio) ;
PICTURE "99.9" COLOR &c_yelowhit.
@ 14,30 SAY TRIM(Empleado->Nombre)+" "+ Empleado->Apellido ;
COLOR &c_yelowhit.
ELSE
* Modo Adición borrar de pantalla las zonas de los campos
@ 6,26 SAY SPACE(30) && CLIENTE
@ 11,18 SAY SPACE(20) && NOMBRE DE ARTICULO
@ 12,44 SAY SPACE(9) && PRECIO
@ 13,21 SAY SPACE(3) && CANTIDAD ALMACENADA
@ 13,48 SAY SPACE(4) && MARGEN DE BENEFICIOS
@ 14,30 SAY SPACE(26) && EMPLEADO
ENDIF
IF ISCOLOR()
@ 20, 2 SAY " Texto/números en amarillo son de fichero relacionado. " ;
COLOR &c_yelowhit.
ELSE
@ 20, 2 SAY " Texto/números sin resaltar son de fichero relacionado. " ;
COLOR &c_red.
ENDIF
SET COLOR TO &c_standard.
ON KEY LABEL F9 DO FindCli WITH m->Cód_cli
ON KEY LABEL F10 DO Findpart WITH m->Cód_art
RETURN
************************************** FIN DE PEDIDOS.PRG ********************************